import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator {
    public static void main(String[] args) {
        //窗体属性
        JFrame f = new JFrame(); //新建一个JFrame
        f.setTitle("计算器"); //设置JFrame标题
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭时的状态
        f.setExtendedState(JFrame.NORMAL); //扩展的状态：最大化
        f.setSize(500, 400); //设置大小
        f.setLocation(600, 200); //设置在屏幕的位置
        f.setResizable(false); //固定窗体大小
        Container con = f.getContentPane();//获得JFrame的容器
        JPanel pan = new JPanel(); //新建一个面板
        pan.setLayout(null); //布局
        con.add(pan); //添加面板进容器
        //创建监听器对象
        CalculatorListener l = new CalculatorListener();
        //以下为创建按钮
        String[] name = {".", "+", "*", "-", "/", "CE", "="};
        JButton[] num = new JButton[10];//数字
        JButton[] op = new JButton[7]; //操作符
        for (int i = 0; i < 10; i++) {
            num[i] = new JButton(i + "");
            num[i].setContentAreaFilled(false); //设置透明
            num[i].addActionListener(l); //添加按钮监听器
            if (i < 7) {
                op[i] = new JButton(name[i]);
                op[i].setContentAreaFilled(false);//设置透明
                op[i].addActionListener(l); //添加按钮监听器
            }
        }
        //设置JButton的位置
        //7 8 9 / CE
        for (int i = 7; i < 10; i++)
            num[i].setBounds(50 + (i - 7) * 80, 80, 60, 50);
        op[4].setBounds(290, 80, 60, 50);
        op[5].setBounds(370, 80, 60, 50);
        //4、5、6、*
        for (int i = 4; i < 7; i++)
            num[i].setBounds(50 + (i - 4) * 80, 145, 60, 50);
        op[2].setBounds(290, 145, 60, 50);
        //1 2 3 -
        for (int i = 1; i < 4; i++)
            num[i].setBounds(50 + (i - 1) * 80, 210, 60, 50);
        op[3].setBounds(290, 210, 60, 50);
        //0 . + =
        num[0].setBounds(50, 275, 140, 50);
        op[0].setBounds(210, 275, 60, 50);
        op[1].setBounds(290, 275, 60, 50);
        op[6].setBounds(370, 145, 60, 180);
        //以下为设置按钮字体大小
        for (int i = 0; i < 10; i++) {
            num[i].setFont(new Font("Arial", Font.PLAIN, 18));
            if (i < 7)
                op[i].setFont(new Font("Arial", Font.PLAIN, 18));
        }
        //以下为添加按钮到pan中
        for (int i = 0; i < 10; i++) {
            pan.add(num[i]);
            if (i < 7)
                pan.add(op[i]);
        }
        //添加文本框
        JTextField tf = new JTextField(20);
        l.setJText(tf); //接收文本框监听
        tf.setBounds(50, 20, 380, 45);
        tf.setFont(new Font("Arial", Font.PLAIN, 18));
        tf.setEditable(false); //不可编辑
        tf.setBackground(Color.white); //文本框背景颜色
        pan.add(tf); //文本框添加到pan中
        f.setVisible(true); //设置JFrame可见性
    }
}